#pragma once

#include <util/vec3.h>

namespace GLC {

class BoundingBox
{
public:
    BoundingBox();

    BoundingBox(vec3f const& minCoord, vec3f const& maxCoord);

    bool isEmpty()const;

    BoundingBox getUnion(BoundingBox const& other)const;

    vec3f const & getMinCoord()const;
    vec3f const & getMaxCoord()const;
    vec3f const getSize()const;
    vec3f const getCenter()const;

private:
    bool _isEmpty;
    vec3f _minCoord;
    vec3f _maxCoord;
};

} // namespace GLC

/**
 * @file boundingbox.h - implementation of box that bounds complex 3-d model.
 *
 * It's simple way to optimize model rendering - at first, we check if box
 * is placed out of scene. If it isn't, than we shouldn't render this model.
 */
